package main 

import (
	"fmt"
)

type Usb interface {// 感觉接口就是定义 方法的  感觉就是一个规范
	Start() 
	Stop()
}
type Phone struct{}
func (p Phone) Start(){
	fmt.Println("手机开始工作")
}
func (p Phone) Stop(){
	fmt.Println("手机停止工作")
}
func (p Phone) Call(){
	fmt.Println("手机正在打电话")
}
type Camera struct{}
func (c Camera) Start(){
	fmt.Println("相机开始工作")
}
func (c Camera) Stop(){
	fmt.Println("相机停止工作")
}
type Computer struct{}
// 编写 电脑接收 有usb接口方法的就能实现
// 所谓实现 usb接口 就是指实现了 usb接口声明的所有方法
func (c Computer) Working(usb Usb){
	// 使用usb接口 调用 start和 stop方法
	usb.Start()
	usb.Stop()
	if phone,ok:=usb.(Phone);ok{// 为什么这里要用 phone呢
		phone.Call()
	}
}

func main(){
	computer :=Computer{}
	phone :=Phone{}
	camera :=Camera{}
	computer.Working(phone)
	computer.Working(camera)
}
// 1- 小结 接口不需要 明确指